約 4,106,893 件
https://w.atwiki.jp/arduino/pages/21.html
無線通信するには? 500円微弱無線モジュール http //strawberry-linux.com/catalog/items?code=82003 http //strawberry-linux.com/catalog/items?code=82004 http //strawberry-linux.com/catalog/items?code=82005 送信受信で各500円。 ノイズが結構あるらしいのでソフトで信頼性を確保する必要があるんだろう。 XBee http //www.alpha-denshi-shop.com/Item/Item_DigiModule.html 数千円するが、これならしっかり安定した通信ができるらしい。 どれを買えばいいのかよくわからない。 消費電力について 例えば、温度センサーモジュールを作って、Arduino/AVR本体はスリープ使って超低消費電力で 5分ごとにデータ送信する。ボタン電池でどれだけ持つんだろうか。
https://w.atwiki.jp/arduino/pages/36.html
bootloader領域のサイズはfuseで指定できる。 データシート( http //reef.path.ne.jp/~hero/hero.htm )で確認してみると、 diecimila mega168 http //reef.path.ne.jp/~hero/pdf/mega88.pdf extended_fuses=0x00 BOOTSZ1/0=0,0 = 1024word = 2KB 16KB-2KB = 14KB = 1024*14=14336(0x3800) mega8 http //reef.path.ne.jp/~hero/pdf/mega8.pdf high_fuses=0xca BOOTSZ1/0=0,1 = 512word = 1KB 8KB-1KB = 7KB = 1024* 7= 7168(0x1c00) アプリの最大サイズ14336,7168とatmega/Makefile,atmega8/Makefileの--section-start=.text=0x3800/0x1c00に対応している。 http //www.geocities.jp/arduino_diecimila/ http //bird.dip.jp/mt/archives/2008/04/19/1649.html などではupload.maximum_size=7168としているが、 mega88でもefuse=00でbootloader=2KBの設定なので 最大サイズは8K-2K=6K = 6144(0x1800) なのではないか? 6144byte以上のスケッチを書き込むと壊れる?? http //bird.dip.jp/mt/archives/2008/04/19/atmega88.zip http //www.geocities.jp/arduino_diecimila/atmega88.zip http //www.geocities.jp/arduino_diecimila/obaka/project-2/LilyPadBOOT_88.zip % avr-size atmega88/ATmegaBOOT_88_ng.hex text data bss dec hex filename 0 1642 0 1642 66a atmega88/ATmegaBOOT_88_ng.hex % avr-size lilypad88/LilyPadBOOT_88.hex text data bss dec hex filename 0 1960 0 1960 7a8 lilypad88/LilyPadBOOT_88.hex % avr-size atmega/ATmegaBOOT_168_diecimila.hex text data bss dec hex filename 0 1958 0 1958 7a6 atmega/ATmegaBOOT_168_diecimila.hex % avr-size atmega/ATmegaBOOT_168_ng.hex text data bss dec hex filename 0 1702 0 1702 6a6 atmega/ATmegaBOOT_168_ng.hex % avr-size atmega/ATmegaBOOT_168_atmega328.hex text data bss dec hex filename 0 1950 0 1950 79e atmega/ATmegaBOOT_168_atmega328.hex % avr-size atmega/ATmegaBOOT_168_pro_8MHz.hex text data bss dec hex filename 0 1968 0 1968 7b0 atmega/ATmegaBOOT_168_pro_8MHz.hex % avr-size atmega8/ATmegaBOOT.hex text data bss dec hex filename 0 1002 0 1002 3ea atmega8/ATmegaBOOT.hex mega8のbootloaderは1KB以内なので、 mega88等mega8のbootloaderを改造したほうがいいかもしれない。 そうしたら7168byteまで使える。 atmegaとatmega8(とlilypadとbt)はなにが違うのだろうか。特別な機能がある? というか、mega88でarduinoクローンを作るなんて無駄なことはやめて bootloader無しで直接書き込みをする手順を確立したほうが役に立つのではないか。 mega88で8192byteまで使えるようになる。mega168で16384byte、mega328で32768まで。 そもそもarduinoにbootloaderがあるのはなぜか? ↓ AVRライタなしでアプリケーションを書くため。 ↓ AVRライタを持っているならばブートローダ不要。 「完成版をmega88で安くすませる」という目的ならばbitbangでDuemilanoveをAVRライタ化して スケッチ本体をbootloader無しで焼いた方がよいに違いない。 赤外線シリアル通信をするbootloaderを作ったらバカバカしいかもしれない。 単方向通信で光通信でベリファイなしの書き込みとか。 リセットをかけられないか。 そういえば、リセットはどうやっているのだろう。 シリアルの特殊な信号線をつかってるのかな。
https://w.atwiki.jp/arduino/pages/34.html
計画 朝になったら自動でカーテンを開ける目覚まし時計を作りたい。 カーテンの端っこにひもを引っかけて朝になったらタイマーが作動してひもを巻き取りカーテンが開くという仕組み。 材料 Arduino2009 モータードライバ BD6211F ←いただきもの 6速ギヤボックスHE リアルタイムクロック ブレッドボード ひも&フック(カーテンを引っ張る) 円柱ゴム(ひもを巻き取る) 木の板&ねじ 抵抗とかコンデンサとか配線材とか 消費電流 RE-260 http //www.mabuchi-motor.co.jp/motorize/branch/b_0100.html 適正電圧適正負荷で700mA 負荷によって変わるだろうから動作させながら実測する! 6速ギヤボックスHE 広いギヤ比に組み替えられるのでとりあえずこれにした。 クラッチギアが付いているので大きい負荷がかかっても少し安心。 完成品は mega88 Arduino内蔵クロックで動かす。 過電流で電源を止めるやつをつける。ポリスイッチ? 電源 開発時はUSB 5V ACアダプタ 5V or 3V http //www.switch-science.com/trac/wiki/BD62xx-Basic モーターの定格電圧が信号系(マイコン)の電源電圧よりも低い場合は困ってしまいます。 モーターによっては、PWMで一定のデューティよりも上げないように注意すれば大丈夫な場合があります。 arduinoは3Vで動くのか? モータとArduinoの電源が同じでOK? リアルタイムクロック 秋月の時計IC バッテリバックアップしたい。 ユーザインターフェイス 正回転/逆回転ボタン タイマー時刻の設定/ロータリエンコーダ? 7セグ時計表示 巻き取り終了の検出 マイクでクラッチの音? 一定の秒数の作動でよい? 製作 (1)ざっと組み立て ギアボックス 巻き取り部取り付け ギアボックス&ブレッドボードを板に固定 Arduinoを固定 モータドライバにピン取り付け (2)モータードライバの実験(2009/4/18) 正転/逆転を実験 スピード&パワーを確認 消費電流を確認 スイッチサイエンスさんのスケッチをちょっと改造で動作OK。 http //www.switch-science.com/trac/wiki/BD62xx-Basic int FIN = 5; int RIN = 6; int LED = 13; int OFFSET = 0.7 * 256 / 5; // analogに255を出したら5V = 0.7V int MAX = 3.0 * 256 / 5 - OFFSET; // RE-260なので3V 3.0V-0.7V = 2.7V int degree10 = 0; int i; void setup() { Serial.begin(300); pinMode(FIN, OUTPUT); pinMode(RIN, OUTPUT); pinMode(LED, OUTPUT); for(i=0; i 5; i++){ digitalWrite(LED, HIGH); delay(200); digitalWrite(LED, LOW); delay(200); } } void loop() { delay(10); degree10 += 3; degree10 %= 3600; long v = int(sin(degree10 * 2 * PI / 360 /10) * MAX); Serial.println(v); if (v 0) { analogWrite(FIN, v + OFFSET); // v(0V..2.7V) OFFSET(=0.7V) なので 0.7V..3.0V analogWrite(RIN, 0); } else if (v 0) { analogWrite(FIN, 0); analogWrite(RIN, OFFSET - v); // v(-0V..-2.7V) OFFSET(=0.7V) なので 0.7V..3.0V } else { analogWrite(FIN, 255); analogWrite(RIN, 255); } } 正回転・逆回転をなめらかに繰り返す。 OFFSETは回転開始の最低電圧。 正 0.7V = 0.8V = ... = 2.9V = 3.0V = 2.9V = ... 0.7V 逆 0.7V = 0.8V = ... = 2.9V = 3.0V = 2.9V = ... 0.7V を繰り返す。 ノイズ? たぶんモーターからのノイズのせいでシリアル通信が途中でとぎれてしまう。 まともにデバッグできないと困るので対策が必要かもしれない。 http //www.picfun.com/motorframe.html モーターの端子と金属ケースの間にコンデンサをいれるといいらしい。 (3)リアルタイムクロック確認(2009/4/19) http //nekosan0.bake-neko.net/connection_rtc.html nekosanのコードでOK。 よく考えたら毎日同じ時間に作動させる必要はなくて、「6時間後に作動」でいいわけだからRTCいらないや。 プログラムも簡単だ。内蔵RCで誤差はどれぐらいか?外部クリスタルつけたら誤差はどれくらい? (4)時計表示(2009/4/19) 7セグ2桁で作動までの残り時間を出せばいい。上の桁が時間、下の桁が10分単位で十分。 いや、もっと簡単にLEDの点滅回数でいい。5回点滅なら5時間。 (5)モーターから音を出す。 普通にモーターを回すときでもPWMの周波数で微妙に音が出てしまう。 てことは、適当にメロディーになるようにモーターに信号を与えたら・・・ 成功! スピーカーなしでBEEP音によるフィードバックが可能になった。 ArduinoのPWM周波数 http //www.musashinodenpa.com/arduino/ref/index.php?f=0 pos=1921 によると PWM信号の周波数は約490Hzです。 http //www.arduino.cc/en/Tutorial/PWM には Arduino s PWM frequency at about 500Hz とある。 しかし、http //www.rohm.co.jp/products/databook/motor/pdf/bd621x_series-j.pdf には 20k〜100kHz を入力しなさいとある。 とりあえず完成 黄色ボタンを押すたびに、「ひも出し」「ひも巻き取り」「停止」 緑ボタンはタイマー時間設定。1時間単位。押すたびにモーターから音を出して操作を確認できる。 タイマー作動後は小鳥のさえずりっぽい音を出してさわやかに目覚める。 /* Curtains Timer */ #include Debounce.h // http //www.arduino.cc/playground/Code/Debounce int FIN = 5; int RIN = 6; int LED = 13; int SW_YELLOW = 3; int SW_GREEN = 2; Debounce sw_yellow = Debounce(20, SW_YELLOW); Debounce sw_green = Debounce(20, SW_GREEN); int motorMode = 0; // 0 STOP,1 right,2 left int timerMode = 0; int timerHour = 0; // 0 0FF, 1 1h ... 12 12h int ledWait = 0; // blink interval. unsigned long lastPushedMs = 0; unsigned long alarmStartMs = 0; unsigned long alarmStopMs = 0; unsigned long motorStopMs = 0; unsigned long MOTOR_RUN_DURATION_MS = 60000; unsigned long SNOOZE_MS = 180000; unsigned long WAIT_MS_PER_PUSH = 3600000; void setup() { int i; Serial.begin(9600); pinMode(FIN, OUTPUT); pinMode(RIN, OUTPUT); pinMode(SW_YELLOW, INPUT); pinMode(SW_GREEN, INPUT); digitalWrite(SW_YELLOW, HIGH); // pull-up digitalWrite(SW_GREEN, HIGH); // pull-up // boot blink sound!! for(i=0; i 3000; i++){ analogWrite(FIN, 255*1/5); analogWrite(RIN, 0); delayMicroseconds(-i/10+350); analogWrite(FIN, 0); analogWrite(RIN, 255*1/5); delayMicroseconds(-i/10+350); #define LED_WAIT 300 if(i%LED_WAIT==0){ if(i/LED_WAIT % 2 == 0){ digitalWrite(LED, HIGH); }else{ digitalWrite(LED, LOW); } } } } void loop(){ motor_loop(); timer_loop(); } void motor_loop() { if(sw_yellow.update() sw_yellow.read()==LOW) { motorMode = (motorMode+1) % 3; motorStopMs = millis() + MOTOR_RUN_DURATION_MS; } switch(motorMode){ case 1 analogWrite(FIN, 255*3/5); analogWrite(RIN, 0); break; case 2 analogWrite(FIN, 0); analogWrite(RIN, 255*3/5); break; default analogWrite(FIN, 0); analogWrite(RIN, 0); break; } if((motorStopMs!=0) (motorStopMs millis())){ motorMode = 0; motorStopMs = 0; } } void timer_loop(){ int i; int pushed = 0; if(sw_green.update() sw_green.read()==LOW){ pushed = 1; lastPushedMs = millis(); } if(timerMode==0){ // nop ledWait = 300; if(pushed){ motorBeep(100, 100); motorBeep(150, 100); motorBeep(200, 100); timerMode = 1; } }else if(timerMode==1){ // setting if(pushed){ timerHour = (timerHour+1)%13; int beepDelay = 600; for(i=0; i timerHour; i++){ beepDelay = beepDelay*20/23; }; motorBeep(beepDelay, 100); if(timerHour==0){ delay(50); motorBeep(beepDelay, 100); } //Serial.println(timerHour); } if((1 =timerHour) (lastPushedMs+10000 millis())){ int beepDelay = 600*20/23; for(i=0; i timerHour; i++){ beepDelay = beepDelay*20/23; motorBeep(beepDelay, 100); delay(100); } alarmStartMs = millis() + timerHour*WAIT_MS_PER_PUSH; //Serial.println(timerHour); timerMode = 2; // goto waiting } ledWait = 0; }else if(timerMode==2){ // waiting ledWait = 2000; if(alarmStartMs millis()){ for(i=0; i 10; i++){ delay(50); motorBeep(100, 100); } alarmStopMs = millis() + MOTOR_RUN_DURATION_MS; motorStopMs = 0; motorMode = 2; timerMode = 3; // goto alarm } //if(millis()%1000==0){ Serial.println(alarmStartMs-millis()); } }else if(timerMode==3){ // alarm!! ledWait = 100; if(alarmStopMs millis()){ for(i=0; i 3; i++){ delay(50); motorBeep(600, 100); } motorMode = 0; timerMode = 4; // goto stop } //if(millis()%1000==0){ Serial.println(alarmStopMs-millis()); } }else if(timerMode==4){ // stop. ledWait = 4000; if(pushed){ motorBeep(700, 500); } if((millis()%SNOOZE_MS)==0){ for(i=10+random(10); 0 =i; i--){ cheep(10+random(50), 100+random(80), 10+random(10), 100+random(300)); } } } // LED 0 OFF, 1+ Nms blink digitalWrite(LED, LOW); if(0 ledWait (millis()/((ledWait+1)/2)%2)==0){ digitalWrite(LED, HIGH); } } // beep from motor void motorBeep(int beepDelay, int lenMs) { digitalWrite(LED, HIGH); unsigned long breakMs = millis()+lenMs; for(;;){ analogWrite(FIN, 255*1/5); analogWrite(RIN, 0); delayMicroseconds(beepDelay); analogWrite(FIN, 0); analogWrite(RIN, 255*1/5); delayMicroseconds(beepDelay); if(breakMs millis()){ break; } } analogWrite(FIN, 0); analogWrite(RIN, 0); digitalWrite(LED, LOW); } // a cheeping little bird void cheep(int start, int end, int sped, int dely) { int i; for(i=start; i end; i+=sped){ motorBeep(i, 10); } delay(dely); } (6)Arduino mega88 (TODO) Arduino2009は他の実験でも使いたいので格安「Arduino mega88 250円」で置き換える。
https://w.atwiki.jp/ylabarduino/pages/18.html
この項目では、Arduinoを使用するにあたって必要なソフトウェアをインストールする手順を記述する。 なお、ここではPCとArduinoハードをUSBケーブルで接続する手順を記す。 Arduinoソフトウェアのインストール 1.ソフトウェアをダウンロード Arduinoダウンロード 各OSそれぞれに対応しているので、自分の環境に適したものをダウンロードする。 適当なディレクトリ上で解凍 2.USB Serial Driverをインストール 3.USB接続するのに必要なドライバをインストールする winとmacで異なるので注意。 win mac 最新バージョンでは、上記ページからダウンロードしたディスクイメージの中にドライバのインストーラが含まれている。(ver.0017以降より) アプリケーションのセットアップ Arduinoを起動し、デバイスとSerial Portを設定することで開発環境が整う。 デバイス [Tool]>[Board]>[使用するデバイス]の順に設定。 Serial Port [Tool]>[Serial Port]>[使用するポート]の順に設定。 多くの場合、USB Serial Portを使用するため、[/dev/tty.usbserial-A6008bT1]或いは[/dev/cu.usbserial-A6008bT1]を選択する。これらがリストにない場合、ドライバが正しくインストールされていない可能性が高い。
https://w.atwiki.jp/arduino/pages/32.html
3軸加速度センサ 3軸加速度センサモジュール KXP84−2050 http //akizukidenshi.com/catalog/g/gI-02347/ 1200円 I2C/SPI/アナログ出力 http //www.kionix.com/accelerometers/accelerometer-KXP84.html データシート http //www.kionix.com/Product-Specs/KXP84-2050%20Specifications%20Rev%202.pdf アプリケーションノート http //www.kionix.com/App-Notes/AN008%20Getting%20Started%20with%20the%20KXP84.pdf 3軸加速度センサモジュール KXM52−1050 http //akizukidenshi.com/catalog/g/gI-01425/ 1000円 アナログ出力のみ AE-KXP84(KXP84−2050) ピンリスト (データシートのチップのピン番号と秋月基板の外部端子番号は違うので注意) 名前 秋月外部端子番号 チップのピン番号 機能 Vdd 1 2 GND 2 1 MOT 3 3 Motion interrupt FF 4 4 Free-fall interrupt SCL/SCLK 5 12 IO_Vdd 6 13 SDA_SDO 7 11 RESET 8 8 ADDRO/SDI 9 10 CS 10 9 X_OUT 11 5 X Y_OUT 12 6 Y Z_OUT 13 7 Z --- 14 14 NC(接続しない) 半田付け 写真のように付属のメスのコネクタを半田付けすればArduinoやブレッドボードとジャンパワイヤで接続できる。 アナログ 配線する。 Arduino AE-KXP84 5V 1 GND 2 Analog0 11 Analog1 12 Analog2 13 これだけでOK。 本格的にArduino/簡易オシロスコープを使えば波形が見れます。 SPI I2C 地震計を作れるか? (TODO) 3軸をRGBに割り当ててみる (TODO) 3軸加速度シンセサイザー (TODO)
https://w.atwiki.jp/arduino/pages/24.html
プルアップの回路 http //www.arduino.cc/en/Tutorial/Button imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 スイッチがOFFの時はAの電圧がHIGHになる。 スイッチがONの時はAの電圧がLOWになる。 プルダウンの回路 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 スイッチがOFFの時はAの電圧がLOWになる。 スイッチがONの時はAの電圧がHIGHになる。 消費電力 通常状態でスイッチがOFFの場合はプルダウンの回路の方が消費電力が少ない。 通常状態でスイッチがONの場合はプルアップの回路の方が消費電力が少ない。 まあ気にすることはないと思うけど。 AVR内蔵のプルアップ抵抗を使える? http //nekosan0.bake-neko.net/structure_digital_port.html によると、 digitalWrite(pin, HIGH); でプルアップされるようです。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 抵抗1つ省略できるので便利。 抵抗値は? プルアップの場合 mega168のデータシートによるとAVR内蔵のプルアップ抵抗は20K-50Kだそうだ。 電圧を測定する部分の抵抗値(=A)より十分小さい スイッチがONになってGNDに接続されても電流が多すぎない という抵抗値である必要があるわけだから100Kではたぶん大きすぎ、1Kでは5Vで5mA。 1Kから20Kぐらいの間で適当に選べばよさそうかな。 プルダウンの場合 スイッチがONになってGNDに接続されても電流が多すぎない 十分しっかりGNDに引っ張れる値 と考えると、何オーム? 内蔵プルアップでのスケッチ int ledPin = 13; int inputPin = 2; void setup() { pinMode(ledPin, OUTPUT); pinMode(inputPin, INPUT); digitalWrite(inputPin, HIGH); // pull-up } void loop(){ int in = digitalRead(inputPin); if(in==HIGH){ digitalWrite(ledPin, LOW); //LED OFF } else{ digitalWrite(ledPin, HIGH); //LED ON } } チャタリング防止 チャタリング防止のライブラリがある。 http //www.arduino.cc/playground/Code/Debounce zipをダウンロードしてarduinoのインストール先のhardware/libraries/Debounceに展開する。 #include Debounce.h // http //www.arduino.cc/playground/Code/Debounce int SW_YELLOW = 3; int SW_GREEN = 2; Debounce sw_yellow = Debounce(20, SW_YELLOW); Debounce sw_green = Debounce(20, SW_GREEN); void setup() { Serial.begin(9600); pinMode(SW_YELLOW, INPUT); pinMode(SW_GREEN, INPUT); digitalWrite(SW_YELLOW, HIGH); // pull-up digitalWrite(SW_GREEN, HIGH); // pull-up } void loop(){ if(sw_yellow.update() sw_yellow.read()==LOW) { yellow_count++; Serial.print("yellow_count="); Serial.println(yellow_count); } if(sw_green.update() sw_green.read()==LOW) { // digitalRead(SW_GREEN)==LOW green_count++; Serial.print("green_count="); Serial.println(green_count); } }
https://w.atwiki.jp/traino/pages/15.html
arduinoは、マイコン統合開発環境と呼ばれます。 くわしくは、こちらです。 http //ja.wikipedia.org/wiki/Arduino もう少しわかりやすく説明すると、「マイコンの動作(ソフトウエア)をパソコンで作ってダウンロードするしくみ」といえます。 なお、パソコンで入力するソフトウエアは、スケッチと呼びます。スケッチは、パソコンで処理(コンパイル)されたあとUSBケーブルなどでarduinoマイコンのメモリに転送されます。一度転送したプログラムはパソコンから切り離しても、また電源を切ってもきえることはありません。
https://w.atwiki.jp/arduino/pages/25.html
PCと通信 http //www.musashinodenpa.com/arduino/ref/index.php?f=0 pos=2824 デバッグで便利。 int ledPin = 13; int inputPin = 2; int prevIn = HIGH; void setup() { pinMode(ledPin, OUTPUT); pinMode(inputPin, INPUT); digitalWrite(inputPin, HIGH); // pull-up Serial.begin(19200); Serial.println("hello??"); // "hello??" Serial.println(79, DEC); // "79" Serial.println(79, HEX); // "4F" Serial.println(79, OCT); // "117" Serial.println(79, BIN); // "1001111" Serial.println(1234); // "1234" } void loop(){ int in = digitalRead(inputPin); if(in==HIGH){ digitalWrite(ledPin, LOW); //LED OFF } else{ digitalWrite(ledPin, HIGH); //LED ON } if(prevIn!=in){ Serial.print(millis()); Serial.print(" "); Serial.println(in); } prevIn = in; }
https://w.atwiki.jp/drpopeye/pages/15.html
Arduinoを使わず、AVRマイコンでArduino互換を作る場合 ブレッドボードでArduinoを作ってみた このニコニコ動画の回路が一番安定して動いた。 digilife このサイトのやり方だと電解コンデンサを使っていないので安定しなかった。 ATmega328P-PUに貼ると便利なシール Arduino unoでのブートローダー焼き Arduino UNO でブートローダー焼き N.Yamazaki's blog 基本的にはこのやり方で大丈夫そう Arduino を AVR プログラマ(ISP In-System Programmer)として使う 不安であれば水晶発振子つけた状態でブートローダー焼き Arduinoにちょうど良い電源 なんでも作っちゃう、かも。 UNOで動いていたのにArduino pro miniで動かない、といった場合に確認すると良い。 Arduinoでの電流増幅の例 フルカラーLEDコントローラ(赤外リモコン式)およびフルカラーLEDテープ(3-1/3) フルカラーLEDコントローラ(赤外リモコン式)およびフルカラーLEDテープ(3-2/3) Arduinoの出力ポートは20mA程度しか流せないので増幅する必要あり。 Arduinoでの交流制御 連載(26)Arduinoで何でも制御 いろんなArduinoがある(8) 連載(26)Arduinoで何でも制御 いろんなArduinoがある(9) ソリッドステート・リレーを使ってArduinoで交流100Vを制御する例。 ArduinoでSDカードの読み書き なんでも作っちゃう、かも。 自分はこのHPを参考に実装した。 SatE-O Arduino系のEagle用library The Adafruit Eagle Library atmelマイコンだけでなくarduino系でよく使う部品のlibraryもまとまってて良い。 Arduino AVR Library for EAGLE Layout Editor arduinoのEagle用library Arduinoで無線で加速度センサのデータをPCで受信するときの最高速度 加速度センサKXM52-1050をarduinoに接続し、xbeeで57600ボーレートで無線通信。 openframeworksだと最高50Hzくらいで3軸の値を取得できた。3軸のデータを3バイトでリアルタイムに送る場合はシリアルの通信的にこれ以上は厳しそう。ボーレート115200に上げればいけるかもしれないが不安定そうなので未確認。
https://w.atwiki.jp/project_plane/pages/11.html
Arduino はイタリア生まれの、AVR マイコンの基板キット。簡単に使える Arduino を使うことで電子回路を簡単に手早く組むことができる。プロトタイプ製作用の基板として設計されているが、ケースに埋め込んで使うことも可能。 Arduino は 13 本のデジタル入出力端子と 6 本のアナログ入力端子を備えている。デジタル入出力端子では、任意の端子に電圧を印加することができ、また任意の端子に対して外部から電圧が印加されているかを確認することができる。またアナログ入力端子では、入力された 0-5 V の電圧を 1024 段階の解像度で確認することができる。Arduino は C 言語に似たプログラミングを実行することができるので、条件分岐や繰り返しを駆使して複雑な電圧操作を行うことができる。 Arduino としての仕様を満たす回路ならば、Arduino として PC からプログラムを書き込むことができる。